const path = require('path')
//在页面中生成html页面的插件
const htmlWebpackPlugin = require('html-webpack-plugin')
const VueLoaderPlugin = require('vue-loader/lib/plugin')

module.exports = {
    mode: 'development', // 设置mode
    entry: path.join(__dirname, './src/main.js'),
    output: {
        path: path.join(__dirname, './dist'),
        filename: 'bundel.js'
    },
    plugins: [
        new htmlWebpackPlugin({
            //指定模板文件路径
            template: path.join(__dirname, './src/index.html'),
            //指定生成页面的文件名
            filename: 'index.html'
        }),
        new VueLoaderPlugin()
    ],
    //用于所有的第三方模块加载器
    module: {
        //所有第三方模块的匹配规则
        rules: [
            //配置处理 .css 文件的第三方loader规则
            {
                test: /\.css$/, 
                //从后往前<——
                use: ['style-loader', 'css-loader']
            },
            //配置处理 .less 文件的第三方loader规则
            {
                test: /\.less$/, 
                use: ['style-loader', 'css-loader', 'less-loader']
            },
            //配置处理 url 图片路径的第三方loader规则  ? 后传参 （默认转为base64格式的字符串）
            //limit 图片的大小，单位byte，如果图片大于等于 limit 值，则不会转为base64格式的字符串，如果小于，则会转为base64格式
            //name 图片名称（为了防止重名，默认改为哈希值）[name].[ext]原来的名字  [hash:8]-[name].[ext]前面加上哈希值防止重名，截取前八位，最大32
            {
                test: /\.(jpg|png)$/, 
                use: 'url-loader?limit=47&name=[hash:8]-[name].[ext]'
            },
            //配置处理 url 字体路径的第三方loader规则
            {
                test: /\.(ttf|eot|svg|woff|woff2)$/, 
                use: 'url-loader'
            },
            //处理 Babel 匹配规则
            { 
                test: /\.js$/,
                use: 'babel-loader',
                exclude: /node_modules/ 
            },
            //处理 .vue 匹配规则
            {
                test: /\.vue$/, 
                use: 'vue-loader'
            }
        ]
    },
    resolve: {
        alias: {
            // "vue$": "vue/dist/vue.js"
        }
    }
}